﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using SGAEntidades;
using SGABDUtil;
using SGAInterfaces;

namespace SGAAccesoDatos
{
    public class ModeloTelefono : IModeloTelefono
    {
        #region Miembros de IModeloTelefono

        public IList<ModeloTelefonoInfo> Listar(ModeloTelefonoInfo oModeloTelefono)
        {
            var sqlParm = new SqlParameter[3];
            var oListModeloTelefono = new List<ModeloTelefonoInfo>();

            sqlParm[0] = new SqlParameter("@Id_Modelo_Telefono", SqlDbType.VarChar);
            if (oModeloTelefono.IdModelo != null) { sqlParm[0].Value = oModeloTelefono.IdModelo; } else { sqlParm[0].Value = DBNull.Value; }

            sqlParm[1] = new SqlParameter("@Id_Marca_Telefono", SqlDbType.VarChar);
            if (oModeloTelefono.IdMarca != null) { sqlParm[1].Value = oModeloTelefono.IdMarca; } else { sqlParm[1].Value = DBNull.Value; }

            sqlParm[2] = new SqlParameter("@Descripcion", SqlDbType.VarChar);
            if (oModeloTelefono.Descripcion != null) { sqlParm[2].Value = oModeloTelefono.Descripcion; } else { sqlParm[2].Value = DBNull.Value; }

            using (
                var drd = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringDistributedTransaction,
                                                  CommandType.StoredProcedure, "SGA_SP_CONSULTAR_MODELO_TELEFONO", sqlParm))
            {
                if (drd != null)
                {
                    if (drd.HasRows)
                    {
                        while (drd.Read())
                        {
                            oListModeloTelefono.Add(new ModeloTelefonoInfo(drd.GetString(0).Trim(), drd.GetString(1).Trim(), drd.GetString(2).Trim(),
                                new MarcaTelefonoInfo(drd.GetString(2).Trim(), drd.GetString(3).Trim()), 
                                drd.GetString(4).Trim(), new GamaTelefonoInfo(drd.GetString(4).Trim(), drd.GetString(5).Trim())));
                        }
                    }
                }
            }
            return oListModeloTelefono;
        }

        public ModeloTelefonoInfo Consultar(ModeloTelefonoInfo oModeloTelefono)
        {
            var sqlParm = new SqlParameter[3];
            var oEntModeloTelefono = new ModeloTelefonoInfo();

            sqlParm[0] = new SqlParameter("@Id_Modelo_Telefono", SqlDbType.VarChar);
            if (oModeloTelefono.IdModelo != null) { sqlParm[0].Value = oModeloTelefono.IdModelo; } else { sqlParm[0].Value = DBNull.Value; }

            sqlParm[1] = new SqlParameter("@Id_Marca_Telefono", SqlDbType.VarChar);
            if (oModeloTelefono.IdMarca != null) { sqlParm[1].Value = oModeloTelefono.IdMarca; } else { sqlParm[1].Value = DBNull.Value; }

            sqlParm[2] = new SqlParameter("@Descripcion", SqlDbType.VarChar);
            if (oModeloTelefono.Descripcion != null) { sqlParm[2].Value = oModeloTelefono.Descripcion; } else { sqlParm[2].Value = DBNull.Value; }

            using (
                var drd = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringDistributedTransaction,
                                                  CommandType.StoredProcedure, "SGA_SP_CONSULTAR_MODELO_TELEFONO", sqlParm))
            {
                if (drd != null)
                {
                    if (drd.HasRows)
                    {
                        drd.Read();
                        oEntModeloTelefono = new ModeloTelefonoInfo(drd.GetString(0).Trim(), drd.GetString(1).Trim(), drd.GetString(2).Trim(),
                            new MarcaTelefonoInfo(drd.GetString(2).Trim(), drd.GetString(3).Trim()),
                                drd.GetString(4).Trim(), new GamaTelefonoInfo(drd.GetString(4).Trim(), drd.GetString(5).Trim()));
                    }
                }
            }
            return oEntModeloTelefono;
        }

        #endregion
    }
}
